package es.tid.topologyModuleBase.management; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.Socket; import java.util.ArrayList; import java.util.logging.Logger; //import es.tid.pce.server.DomainPCESession; import es.tid.topologyModuleBase.TopologyModuleParamsArray; import es.tid.topologyModuleBase.database.TopologiesDataBase; import es.tid.topologyModuleBase.plugins.TMPlugin; /** * * @author La comunidad * */ public class TMManagementSession extends Thread { private boolean started = false; /** * The socket of the management session */ private Socket socket; /** * Logger */ private Logger log; /** * Output Stream of the managament session, to write the answers. */ private PrintStream out; /** * The TEDB */ private TopologiesDataBase tedb; /* * */ TopologyModuleParamsArray params; ArrayList<TMPlugin> pluginsList; //public static ArrayList<DomainPCESession> oneSession = new ArrayList<DomainPCESession>(); public TMManagementSession(Socket s,TopologiesDataBase tedb, TopologyModuleParamsArray params, ArrayList<TMPlugin> pluginsList ){ this.socket=s; this.tedb=tedb; this.params = params; this.pluginsList=pluginsList; log=Logger.getLogger("TMController"); } public void run(){ log.info("Starting Management session for TM"); boolean running=true; try { out=new PrintStream(socket.getOutputStream()); } catch (IOException e) { log.warning("Management session cancelled: "+e.getMessage()); return; } try { BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); while (running) { if (!started) { out.print("\n"); out.print(" T ,\r\n"); out.print(" O |'. ,\r\n"); out.print(" P | '-._ / )\r\n"); out.print(" O .' .._ ', /_'-,\r\n"); out.print(" ' / _'.'_\\ /._)')\r\n"); out.print(" M : / '_' '_' / _.'\r\n"); out.print(" O |E | |Q| |Q| / /\r\n"); out.print(" D .' _\\ '-' '-' /\r\n"); out.print(" U .'--.(S ,__` ) /\r\n"); out.print(" L '-. _.' /\r\n"); out.print(" E __.--'----( /\r\n"); out.print(" _.-' : __\\ /\r\n"); out.print(" ( __.' :' :Y\r\n"); out.print(" '. '._, : :|\r\n"); out.print(" '. ) :.__:|\r\n"); out.print(" \\ \\______/\r\n"); out.print(" '._L/_H____]\r\n"); out.print(" /_ /\r\n"); out.print(" / '-.__.-')\r\n"); out.print(" : / /\r\n"); out.print(" : / /\r\n"); out.print(" ,/_____/----;\r\n"); out.print(" '._____)----'\r\n"); out.print(" / / /\r\n"); out.print(" / / /\r\n"); out.print(" .' / \\\r\n"); out.print(" (______(-.____)\r\n"); out.print("***********************************************\n"); started = true; } out.print("Available commands:\r\n\n"); out.print("\t1) showTED\r\n"); out.print("\t2) showPlugins\r\n"); out.print("\t3) help\r\n"); out.print("\tENTER) quit\r\n"); out.print("TM:>"); String command = null; try { command = br.readLine(); } catch (IOException ioe) { log.warning("IO error trying to read your command"); return; } if(command == null) { continue; } if (command.equals("quit") || command.equals("")) { log.info("Ending Management Session"); out.println("bye!"); try { out.close(); } catch (Exception e){ e.printStackTrace(); } try { br.close(); } catch (Exception e){ e.printStackTrace(); } return; } if (command.equals("showTED") || command.equals("1")) { out.print(tedb.printTopology()+"\n"); } else if (command.equals("showPlguins") || command.equals("2")) { int i=1; for(TMPlugin p : this.pluginsList){ out.print(i+") "+p.getPluginName()); if(p.isRunning()) out.print(" [Running]\n"); else out.print(" [Stop]\n"); i++; } out.print("ENTER) back\n\nTM:>"); String command2; try { command2 = br.readLine(); } catch (IOException ioe) { log.warning("IO error trying to read your command"); return; } if(command2 == null) { continue; } try{ int option = Integer.parseInt(command2); out.print(this.pluginsList.get(option-1).displayInfo()+"\n\n"); }catch(java.lang.NumberFormatException e){ continue; } } else if (command.equals("help") || command.equals("3")) { out.print("Available commands:\r\n\n"); out.print("\t1) showTED\r\n"); out.print("\t2) help\r\n"); out.print("\tENTER) quit\r\n"); } else{ out.print("invalid command\n"); out.print("\n"); } } } catch (Exception e) { e.printStackTrace(); return; } } }